//ES6 允许按照一定模式从数组和对象中提取值，对变量进行赋值，
//这被称为解构赋值。
//1. 数组的解构
// const F4 = ['小沈阳', '刘能', '赵四', '宋小宝']
// let [xiao, liu, zhao, song] = F4
// console.log(xiao)//小沈阳
// console.log(liu)//刘能
// console.log(zhao)//赵四
// console.log(song)//宋小宝

// 2. 对象的解构
const zhao = {
  name: '赵本山',
  age: '不详',
  xiaopin: function () {
    console.log('我可以演小品')
  }
}

// let {name, age, xiaopin} = zhao;
// console.log(name);
// console.log(age);
// console.log(xiaopin);
// xiaopin();

let { xiaopin } = zhao
xiaopin()//我可以演小品
let [x, y, ...z] = ['a'];
console.log(x) // "a"
console.log(y)// undefined 如果解构不成功，变量的值就等于 undefined 。
console.log(z)// []
//如果一个数组成员是 null ，默认值就不会生效，因为 null 不严格等于 undefined 
let [n = 1] = [undefined];
console.log(n); // 1
let [n2 = 1] = [null];
console.log(n2);//null
let { foo: baz } = { foo: 'aaa', bar: 'bbb' };
console.log(baz); // "aaa"
let obj = { first: 'hello', last: 'world' };
let { first: f, last: l } = obj;
console.log(f); // 'hello'
console.log(l); // 'world'

